package visiopuce.action;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import org.eclipse.jface.action.Action;

import visiopuce.HibernateUtil;
import visiopuce.ICommandIds;
import visiopuce.DAO.AnalyseDAO;
import visiopuce.DAO.AnalyseDAOImpl;
import visiopuce.DAO.CotationDAO;
import visiopuce.DAO.CotationDAOImpl;
import visiopuce.DAO.PersonneDAO;
import visiopuce.DAO.PersonneDAOImpl;
import visiopuce.DAO.PrelevementDAO;
import visiopuce.DAO.PrelevementDAOImpl;
import visiopuce.DAO.ResultatDAO;
import visiopuce.DAO.ResultatDAOImpl;
import visiopuce.objets.Analyse;
import visiopuce.objets.Biomedecine;
import visiopuce.objets.Cotation;
import visiopuce.objets.Personne;
import visiopuce.objets.Prelevement;
import visiopuce.objets.Resultat;
import visiopuce.objets.TypeCotation;
import visiopuce.objets.TypePrelevement;
import visiopuce.objets.Utilisateur;
import visiopuce.service.AnalyseServiceImpl;
import visiopuce.service.PrelevementServiceImpl;
import visiopuce.service.ReferentielService;
import visiopuce.service.ReferentielServiceImpl;
import visiopuce.service.ResultatServiceImpl;
import visiopuce.service.UtilisateurService;
import visiopuce.service.UtilisateurServiceImpl;

public class ParserFichierAction extends Action {

	PersonneDAO personneDAO = PersonneDAOImpl.getInstance();
	PrelevementDAO prelevementDAO = PrelevementDAOImpl.getInstance();
	AnalyseDAO analyseDAO = AnalyseDAOImpl.getInstance();
	ResultatDAO resultatDAO = ResultatDAOImpl.getInstance();
	CotationDAO cotationDAO = CotationDAOImpl.getInstance();
	ReferentielService referentielService = ReferentielServiceImpl.getInstance();
	UtilisateurService utilisateurService = UtilisateurServiceImpl.getInstance();
	String[] cotationcytoS = { "A9005", "A9105", "AN200", "AN206", "A0901", "AB027", "AB046", "AB047", "A0903", "A0904", "A0905", "AB023", "AB036", "AN207", "AB011", "AB015", "AB018", "AB026", "AB029", "AB030", "AB031", "AB037", "AB038", "AN103" };
	String[] cotationcytoLA = { "A9005", "AN200", "AN206", "A0041", "A4031", "AB047", "AQ012", "AQ020", "A0903", "A0904", "A0905", "AB023", "AB036", "AN207", "A0040", "AB002", "AB004", "AB046", "AB003", "AB026", "AB029", "AB030", "AB031", "AB037", "AB038" };
	String[] cotationcytoVC = { "A9005", "AN200", "AN206", "A0040", "A0041", "A4031", "AB001", "AB047", "AQ012", "A0903", "A0904", "A0905", "AB023", "AB036", "AN207", "AB002", "AB003", "AB004", "AB046", "AQ020", "AB026", "AB029", "AB030", "AB031", "AB037", "AB038" };
	String[] cotationcytoF = { "A9005", "A9105", "AN200", "AN206", "A0902", "AB046", "AB047", "AB027", "A0903", "A0904", "A0905", "AB023", "AN207", "AB015", "AB002", "AB004", "AQ020", "AB026", "AB036", "AB029", "AB030", "AB031", "AB037", "AB038", "A4031" };
	String[] cotationcytoSF = { "A9005", "A9105", "AN200", "AN206", "A0902", "AB046", "AB047", "A0903", "A0904", "A0905", "AB023", "AN207", "AB011", "AB015", "AB018", "AB027", "A0040", "A0041", "AB002", "AB003", "AB026", "AB036", "AB029", "AB030", "AB031", "A4037", "A4038" };
	String[] cotationpuceP = { "A9005", "A9105", "AN200", "AN206", "AQ043" };
	String[] cotationpuceA = { "A9005", "A9105", "AN200", "AQ002", "AQ003", "AQ901", "AN923", "AQ048", "AN018", "AN014", "AB034", "AN211", "AN215", "AN216", "AB050", "AN207", "A0904", "AB023", "AB037", "AB037", "AN317", "AN308", "AN309", "AN927", "AN928", "AN929", "AN930", "A0905" };

	SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");

	public ParserFichierAction(String text) {
		super(text);
		// The id is used to refer to the action in a menu or toolbar
		setId(ICommandIds.CMD_PARSER_FICHIER);
		// Associate the action with a pre-defined command, to allow key
		// bindings.
		setActionDefinitionId(ICommandIds.CMD_PARSER_FICHIER);
		setText("Parser les fichiers");
		setToolTipText("Paser cotation");
		setImageDescriptor(visiopuce.Activator.getImageDescriptor("/icons/switch-user.png"));
	}

	public void run() {
		// Créer un nom de fichier basé sur la date et l'heure
		SimpleDateFormat filePattern = new SimpleDateFormat("ddMMyyyy_HHmm");
		String filename = filePattern.format(new Date()) + ".txt";
		// ouvrir le fichier
	//	File file = new File("c://cytogalaxie" + filename);
		File file = new File("c://Temp/01619635/" + filename);
		try {
			PrintStream printStream = new PrintStream(file);
			System.setOut(printStream);
			System.setErr(printStream);
			String[] fichiers = { "puceA.csv" };
		//	String[] fichiers = { "cytoS.csv", "cytoF.csv", "cytoLA.csv", "cytoVC.csv", "cytoSF.csv", "puceP.csv", "puceA.csv" };
			// String fichier = "cytoF.csv";
			// String fichier = "cytoLA.csv";
			// String fichier = "cytoVC.csv";
			// String fichier = "cytoSF.csv";
			//
			// String fichier = "dpiS.csv";
			// String fichier = "dpiF.csv";
			// String fichier = "dpiLA.csv";
			// String fichier = "dpiVC.csv";
			// String fichier = "dpiSF.csv";
			for (String fichier : fichiers) {

				InputStream ips;

			//	ips = new FileInputStream("C:/Users/Manon/Documents/workspace visiopuce2/visiopuce/" + fichier);
				ips = new FileInputStream("C:/Temp/01619635/" + fichier);

				InputStreamReader ipsr = new InputStreamReader(ips, "utf8");
				BufferedReader br = new BufferedReader(ipsr);
				String ligne;
				int nbLigne = 0;
				Biomedecine bm = new Biomedecine();
				bm.setIdBiomedecine(36);
				ligne = br.readLine();
				while ((ligne = br.readLine()) != null) {

					// System.out.println(ligne);
					Date dateReception = null;
					Date dateDemande = null;
					Personne p = null;
					Prelevement prel = null;
					String[] tableau = ligne.split(";");

					if (tableau.length > 6) {
						String dateRecpFr = tableau[0].trim();//
						String numPrel = tableau[1].trim();//
						String ufDem = tableau[2].trim();//
						String ufExec = tableau[3].trim();//
						String nom = tableau[4].trim().toUpperCase();//
						String prenom = tableau[5].trim().toUpperCase();//
						if ((prenom == null || prenom.isEmpty()) && nom.contains("CECOS")) {
							prenom = "CECOS";
						}
						if (nom != null && prenom != null && !nom.isEmpty() && !prenom.isEmpty()) {
							String presc = null;
							String dateNaissanceFr = null;
							String typePrel = null;
							if (tableau.length > 6) {
								dateNaissanceFr = tableau[6].trim();//
							}
							if (tableau.length > 7) {
								presc = tableau[7].trim();//
							}

							if (tableau.length > 8) {
								typePrel = tableau[8].trim();//
							}
							String dateDemandeFr = null;
							if (tableau.length > 9) {
								dateDemandeFr = tableau[9].trim();
							}
							String info = null;
							if (tableau.length > 10) {
								info = tableau[10].trim();
							}
							String iep = "Non rentré";
							if (tableau.length > 11) {
								iep = tableau[11].trim();
							}
							String dateRendufr = null;
							if (tableau.length > 12) {
								dateRendufr = tableau[12].trim();
							}
							String signataire = null;
							if (tableau.length > 13) {
								signataire = tableau[13].trim();//
							}
							if (dateNaissanceFr != null && !dateNaissanceFr.isEmpty()) {
								try {
									HibernateUtil.beginTransaction();
									p = personneDAO.getPersonneByNomPrenomDateNaissance(nom, prenom, formatter.parse(dateNaissanceFr));
									HibernateUtil.commitTransaction();
								} catch (ParseException e) {
									System.out.println("erreur date de naissance " + dateNaissanceFr + ":" + ligne);
									e.printStackTrace();
								}
							}
							if (p == null) {
								p = new Personne();
								p.setIdPersonne(0);
								p.setNom(nom.trim().toUpperCase());
								p.setPrenom(prenom.trim().toUpperCase());
								if (!dateNaissanceFr.isEmpty()) {
									try {
										Date dateNaissance = formatter.parse(dateNaissanceFr);
										p.setDateNaissance(dateNaissance);
									} catch (ParseException e) {
										System.out.println("erreur date de naissance " + dateNaissanceFr + ":" + ligne);
										e.printStackTrace();
									}
								}
							}
							if (p.getNumSejour() == null || p.getNumSejour().equals("0") || p.getNumSejour().contains("non") || p.getNumSejour().contains("Non")) {
								p.setNumSejour(iep);
							}
							if (p.getType() == null) {
								p.setType("NA");
							}
							p.setCommentaires(info);
							if (p.getSexe() == null) {
								p.setSexe("NA");
							}

							HibernateUtil.beginTransaction();
							personneDAO.save(p);
							HibernateUtil.commitTransaction();

							HibernateUtil.beginTransaction();
							prel = prelevementDAO.getPrelevementByNumero(numPrel.trim());
							HibernateUtil.commitTransaction();
							if (prel == null) {
								prel = new Prelevement();
								prel.setIdPrelevement(0);
								prel.setPersonne(p);
								prel.setNumeroPrelevement(numPrel.trim());
							}
							if (!dateRecpFr.isEmpty() && prel.getDateReception() == null) {
								try {
									dateReception = formatter.parse(dateRecpFr);
									prel.setDateReception(dateReception);
								} catch (ParseException e) {
									System.out.println("erreur date de recpetion " + dateRecpFr + ":" + ligne);
									e.printStackTrace();
								}

							}
							if (dateDemandeFr != null && !dateDemandeFr.isEmpty() && prel.getDatePrelevement() == null) {
								try {
									dateDemande = formatter.parse(dateDemandeFr);
									prel.setDatePrelevement(dateDemande);
								} catch (ParseException e) {
									System.out.println("erreur date de demande " + dateDemandeFr + ":" + ligne);
									e.printStackTrace();
								}

							}
							if (typePrel != null) {
								if (prel.getInfoIndication() != null) {
									prel.setInfoIndication(prel.getInfoIndication() + typePrel);
								} else {
									prel.setInfoIndication(typePrel);
								}
							}
							if (prel.getTypePrelevement() == null && typePrel != null) {
								TypePrelevement tp = referentielService.getTypePrelevementByLibelle(typePrel.trim());
								if (tp != null) {
									prel.setTypePrelevement(tp);
								}
							}
							if (prel.getTypePrelevement() == null || prel.getTypePrelevement().getIdTypePrelevement() == 10) {
								if (fichier.contains("cytoS.csv")) {
									TypePrelevement tp = referentielService.getTypePrelevementByLibelle("Sang");
									if (tp != null) {
										prel.setTypePrelevement(tp);
									} else {
										System.out.println("erreur de type de prélèvement : " + typePrel + ":" + ligne);
									}
								}
								if (fichier.contains("cytoSF.csv")) {
									TypePrelevement tp = referentielService.getTypePrelevementByLibelle("Sang foetal");
									if (tp != null) {
										prel.setTypePrelevement(tp);
									} else {
										System.out.println("erreur de type de prélèvement : " + typePrel + ":" + ligne);
									}
								}
								if (fichier.contains("cytoLA.csv")) {
									TypePrelevement tp = referentielService.getTypePrelevementByLibelle("Liquide Amniotique natif");
									if (tp != null) {
										prel.setTypePrelevement(tp);
									} else {
										System.out.println("erreur de type de prélèvement : " + typePrel + ":" + ligne);
									}
								}
								if (fichier.contains("cytoF.csv")) {
									if (typePrel.contains("Empreinte")) {
										typePrel = "Culot urinaire";
									} else if (typePrel.contains("endon")) {
										typePrel = "Tissus (tendon)";
									} else if (typePrel.contains("oumon")) {
										typePrel = "Tissus (poumon)";
									} else if (typePrel.contains("culot urinaire")) {
										typePrel = "Culot urinaire";
									} else if (typePrel.contains("jugal")) {
										typePrel = "Frottis jugal";
									} else

										typePrel = "Fibroblastes";
									TypePrelevement tp = referentielService.getTypePrelevementByLibelle(typePrel);
									if (tp != null) {
										prel.setTypePrelevement(tp);
									} else {
										System.out.println("erreur de type de prélèvement : " + typePrel + ":" + ligne);
									}

								}
								if (fichier.contains("cytoVC.csv")) {
									TypePrelevement tp = referentielService.getTypePrelevementByLibelle("Villosités choriales natif");
									if (tp != null) {
										prel.setTypePrelevement(tp);
									} else {
										System.out.println("erreur de type de prélèvement : " + typePrel + ":" + ligne);
									}
								}
								if (fichier.contains("puceA.csv")) {
									TypePrelevement tp = referentielService.getTypePrelevementByLibelle(typePrel.trim());
									if (tp != null) {
										prel.setTypePrelevement(tp);
									} else {
										System.out.println("erreur de type de prélèvement : " + typePrel + ":" + ligne);
									}
								}
								if (fichier.contains("puceP.csv")) {
									TypePrelevement tp = referentielService.getTypePrelevementByLibelle("Sang");
									if (tp != null) {
										prel.setTypePrelevement(tp);
									} else {
										System.out.println("erreur de type de prélèvement : " + typePrel + ":" + ligne);
									}
								}
							}
							if (fichier.contains("cytoS.csv") || fichier.contains("cytoF.csv")) {
								prel.setSecteur(referentielService.getSecteurByNom("Postnatal"));
								prel.setDpi(false);

							} else if (fichier.contains("cytoLA.csv") || fichier.contains("cytoVC.csv") || fichier.contains("cytoSF.csv")) {
								prel.setSecteur(referentielService.getSecteurByNom("Prénatal"));
								prel.setDpi(false);

							} else if (fichier.contains("puceP.csv")) {
								prel.setSecteur(referentielService.getSecteurByNom("Banque"));
								prel.setDpi(false);

							} else if (fichier.contains("puceA.csv")) {
								if (typePrel.equals("Sang")) {
									prel.setSecteur(referentielService.getSecteurByNom("Puce prénatale"));
									prel.setDpi(false);
								} else if (typePrel.equals("Foetopathologie")) {
									prel.setSecteur(referentielService.getSecteurByNom("Puce foetopathologie"));
									prel.setDpi(false);
								} else {
									prel.setSecteur(referentielService.getSecteurByNom("Puce postnatale"));
									prel.setDpi(false);
								}

							}
							if (fichier.contains("dpiS.csv") || fichier.contains("dpiF.csv")) {
								prel.setSecteur(referentielService.getSecteurByNom("Postnatal"));
								prel.setDpi(true);

							} else if (fichier.contains("dpiLA.csv") || fichier.contains("dpiVC.csv") || fichier.contains("dpiSF.csv")) {
								prel.setSecteur(referentielService.getSecteurByNom("Prénatal"));
								prel.setDpi(true);

							}

							prel.setRecherche(false);

							if (prel.getIndication() == null) {
								prel.setIndication(bm);
							}
							if ((presc != null && presc.trim().contains("DPI")) || (ufExec != null && ufExec.contains("DPI")) || (ufDem != null && ufDem.contains("DPI")) || (info != null && info.contains("DPI"))) {
								prel.setDpi(true);
							}
							System.out.println(prel.getNumeroPrelevement());
							HibernateUtil.beginTransaction();
							prelevementDAO.save(prel);
							HibernateUtil.commitTransaction();
							// prelevementDAO.save(prel);
							// System.out.println(prel);
							Analyse analyse = null;

							if (fichier.contains("cyto")) {
								analyse = AnalyseServiceImpl.getInstance().getAnalyseByTypeAndNumeroPrelevement(1, numPrel.trim());
								if (analyse == null) {
									analyse = new Analyse();
									analyse.setIdAnalyse(0);

								}
								if (analyse.getTypeAnalyse() == null) {
									analyse.setTypeAnalyse(referentielService.getTypeAnalyseByid("1"));
								}

							}
							if (fichier.contains("puceA")) {
								analyse = AnalyseServiceImpl.getInstance().getAnalyseByTypeAndNumeroPrelevement(3, numPrel.trim());
								if (analyse == null) {
									analyse = new Analyse();
									analyse.setIdAnalyse(0);

								}
								if (analyse.getTypeAnalyse() == null) {
									analyse.setTypeAnalyse(referentielService.getTypeAnalyseByid("3"));
								}

							}
							if (analyse != null) {
								analyse.setPrelevement(PrelevementServiceImpl.getInstance().getPrelevementByNumero(numPrel.trim()));

								Utilisateur prescri = null;
								Utilisateur prescri2 = null;
								Utilisateur prescri3 = null;
								String[] tabPresc = null;
								if (presc != null) {
									tabPresc = presc.trim().split("/");
									if (tabPresc.length > 0) {
										prescri = utilisateurService.getUtilisateurByNom(tabPresc[0].trim());
									}
									if (tabPresc.length > 1) {
										prescri2 = utilisateurService.getUtilisateurByNom(tabPresc[1].trim());
										if (prescri2 == null) {
											analyse.setNomPrenomAutrePresc(analyse.getNomPrenomAutrePresc() + tabPresc[1].trim());
										}
									}
									if (tabPresc.length > 2) {
										prescri3 = utilisateurService.getUtilisateurByNom(tabPresc[2].trim());
										if (prescri3 == null) {
											analyse.setNomPrenomAutrePresc(analyse.getNomPrenomAutrePresc() + tabPresc[2].trim());
										}
									}
									if (tabPresc.length > 3) {
										analyse.setNomPrenomAutrePresc(analyse.getNomPrenomAutrePresc() + tabPresc[3].trim());
									}
									if (tabPresc.length > 4) {
										analyse.setNomPrenomAutrePresc(analyse.getNomPrenomAutrePresc() + tabPresc[4].trim());
									}
								}
								if (ufDem != null && !ufDem.isEmpty() && (analyse.getUfPresc() == null || analyse.getUfPresc() == 0)) {
									try {
										if (ufDem.contains("CH") || ufDem.contains("ext")) {
											analyse.setUfPresc(9999);
										} else {
											analyse.setUfPresc(Integer.parseInt(ufDem));
										}
									} catch (NumberFormatException ne) {
										analyse.setUfPresc(9999);
										// System.out.println("erreur d'UF Presc : "
										// + ufDem + ":" + ligne);
										// analyse.setUfPresc(0);
									}

								} else {
									if (ufDem == null) {
										System.out.println("erreur ufDem null" + ":" + ligne);
									}
								}

								if (tabPresc != null) {
									if (prescri != null && analyse.getPrescripteur() == null) {
										analyse.setPrescripteur(prescri);
									} else {
										if (prescri == null) {
											if (analyse.getUfPresc() != null && analyse.getUfPresc() == 9999) {
												Utilisateur pre = utilisateurService.getUtilisateurById(999);
												if (analyse.getPrescripteur() == null) {
													analyse.setPrescripteur(pre);
												}
											} else {
												System.out.println("erreur de presc : " + presc + ":" + ligne);
											}
										}
									}
									if (prescri2 != null && analyse.getPrescripteur2() == null) {
										analyse.setPrescripteur2(prescri2);
									} else {
										if (prescri2 == null && tabPresc.length > 1) {
											if (analyse.getUfPresc() != null && analyse.getUfPresc() == 9999) {
												Utilisateur pre = utilisateurService.getUtilisateurById(999);
												if (analyse.getPrescripteur2() == null) {
													analyse.setPrescripteur2(pre);
												}
											} else {
												System.out.println("erreur de presc2 : " + presc + ":" + ligne);
											}
										}
									}
									if (prescri3 != null && analyse.getPrescripteur3() == null) {
										analyse.setPrescripteur3(prescri3);
									} else {
										if (prescri3 == null && tabPresc.length > 2) {
											if (analyse.getUfPresc() != null && analyse.getUfPresc() == 9999) {
												Utilisateur pre = utilisateurService.getUtilisateurById(999);
												if (analyse.getPrescripteur3() == null) {
													analyse.setPrescripteur3(pre);
												}
											} else {
												System.out.println("erreur de presc3 : " + presc + ":" + ligne);
											}
										}
									}
								}
								if (ufExec != null && !ufExec.isEmpty() && (analyse.getUfExec() == null || analyse.getUfExec() == 0)) {
									try {
										analyse.setUfExec(Integer.parseInt(ufExec));
									} catch (NumberFormatException ne) {
										System.out.println("erreur d'UF Exec : " + ufExec + ":" + ligne);
										analyse.setUfExec(0);
									}

								} else {
									if (ufExec == null) {
										System.out.println("erreur ufExec null" + ":" + ligne);
									}
								}

								// analyseDAO.save(analyse);
								// System.out.println(analyse);

								HibernateUtil.beginTransaction();
								analyseDAO.save(analyse);
								HibernateUtil.commitTransaction();

								if (fichier.contains("cyto")) {

									if (dateRendufr != null && !dateRendufr.isEmpty()) {
										Resultat resulatCaryo = null;
										List<Resultat> resulatCaryos = ResultatServiceImpl.getInstance().findAllByidAnalyse(analyse.getIdAnalyse());
										if (resulatCaryos == null || resulatCaryos.size() == 0) {
											resulatCaryo = new Resultat();
											resulatCaryo.setIdResultat(0);
											resulatCaryo.setAnalyse(analyse);

										} else {
											resulatCaryo = resulatCaryos.get(0);
										}

										if (resulatCaryo.getDateRendu() == null) {
											try {
												Date dateRendu = formatter.parse(dateRendufr);

												resulatCaryo.setDateRendu(dateRendu);
											} catch (ParseException e) {
												System.out.println("erreur date de rendu " + dateRendufr + ":" + ligne);
											}
										}
										if (resulatCaryo.getSignataire() == null) {
											if (signataire != null) {
												String sig = signataire.trim();
												if (signataire.trim().equals("ST")) {
													sig = "Taviaux";
												}
												if (signataire.trim().equals("AS")) {
													sig = "Schneider";
												}
												if (signataire.trim().equals("GL") || signataire.trim().equals("Gl")) {
													sig = "Lefort";
												}
												if (signataire.trim().equals("JP")) {
													sig = "Puechberty";
												}
												if (signataire.trim().equals("FP")) {
													sig = "Pellestor";
												}
												if (signataire.trim().equals("VG")) {
													sig = "Gatinois";
												}
												Utilisateur signa = utilisateurService.getUtilisateurByNom(sig);
												if (signa != null) {
													resulatCaryo.setSignataire(signa);
												} else {
													System.out.println("erreur de signataire : " + signataire + ":" + ligne);
												}
											}
										}
										if (resulatCaryo.getHerite() == null) {
											resulatCaryo.setHerite("NA");
										}
										if (resulatCaryo.getResultat() == null) {
											resulatCaryo.setResultat("NA");
										}

										HibernateUtil.beginTransaction();
										resultatDAO.save(resulatCaryo);
										HibernateUtil.commitTransaction();
										// resultatDAO.save(r);
										// System.out.println(r);
									}
								}
							}
							if (fichier.contains("cytoS.csv")) {

								for (int i = 14; i < cotationcytoS.length + 14; i++) {
									if (i < tableau.length) {
										String dateCotation = tableau[i];
										if (!dateCotation.isEmpty()) {
											Cotation c = new Cotation();
											if (dateCotation.equals("x") || dateCotation.equals("X")) {
												c.setDate(dateReception);
											} else {
												try {
													Date dateCotationD = formatter.parse(dateCotation);
													c.setDate(dateCotationD);
												} catch (ParseException e) {
													System.out.println("erreur date de cotation " + dateCotation + ":" + ligne);
													e.printStackTrace();
												}
											}
											c.setAnalyse(analyse);
											c.setPersonne(p);
											c.setPrelevement(prel);
											// System.out.println(cotationcytoS[i
											// - 14]);
											List<TypeCotation> tc = referentielService.getTypeCotation(cotationcytoS[i - 14]);
											c.setTypeCotation(tc.get(0));

											HibernateUtil.beginTransaction();
											cotationDAO.save(c);
											HibernateUtil.commitTransaction();

											// cotationDAO.save(c);
											// System.out.println(c);

										}
									}

								}

							}

							if (fichier.contains("cytoF.csv")) {

								for (int i = 14; i < cotationcytoF.length + 14; i++) {
									if (i < tableau.length) {
										String dateCotation = tableau[i];
										if (!dateCotation.isEmpty()) {
											Cotation c = new Cotation();
											if (dateCotation.equals("x") || dateCotation.equals("X")) {
												c.setDate(dateReception);
											} else {
												try {
													Date dateCotationD = formatter.parse(dateCotation);
													c.setDate(dateCotationD);
												} catch (ParseException e) {
													System.out.println("erreur date de cotation " + dateCotation + ":" + ligne);
													e.printStackTrace();
												}
											}
											c.setAnalyse(analyse);
											c.setPersonne(p);
											c.setPrelevement(prel);
											// System.out.println(cotationcytoS[i
											// - 14]);
											List<TypeCotation> tc = referentielService.getTypeCotation(cotationcytoF[i - 14]);
											c.setTypeCotation(tc.get(0));

											HibernateUtil.beginTransaction();
											cotationDAO.save(c);
											HibernateUtil.commitTransaction();

											// cotationDAO.save(c);
											// System.out.println(c);

										}
									}

								}

							}

							if (fichier.contains("cytoLA.csv")) {

								for (int i = 14; i < cotationcytoLA.length + 14; i++) {
									if (i < tableau.length) {
										String dateCotation = tableau[i];
										if (!dateCotation.isEmpty()) {
											Cotation c = new Cotation();
											if (dateCotation.equals("x") || dateCotation.equals("X")) {
												c.setDate(dateReception);
											} else {
												try {
													Date dateCotationD = formatter.parse(dateCotation);
													c.setDate(dateCotationD);
												} catch (ParseException e) {
													System.out.println("erreur date de cotation " + dateCotation + ":" + ligne);
													e.printStackTrace();
												}
											}
											c.setAnalyse(analyse);
											c.setPersonne(p);
											c.setPrelevement(prel);
											// System.out.println(cotationcytoS[i
											// - 14]);
											List<TypeCotation> tc = referentielService.getTypeCotation(cotationcytoLA[i - 14]);
											c.setTypeCotation(tc.get(0));

											HibernateUtil.beginTransaction();
											cotationDAO.save(c);
											HibernateUtil.commitTransaction();

											// cotationDAO.save(c);
											// System.out.println(c);

										}
									}

								}

							}

							if (fichier.contains("cytoVC.csv")) {

								for (int i = 14; i < cotationcytoVC.length + 14; i++) {
									if (i < tableau.length) {
										String dateCotation = tableau[i];
										if (!dateCotation.isEmpty()) {
											Cotation c = new Cotation();
											if (dateCotation.equals("x") || dateCotation.equals("X")) {
												c.setDate(dateReception);
											} else {
												try {
													Date dateCotationD = formatter.parse(dateCotation);
													c.setDate(dateCotationD);
												} catch (ParseException e) {
													System.out.println("erreur date de cotation " + dateCotation + ":" + ligne);
													e.printStackTrace();
												}
											}
											c.setAnalyse(analyse);
											c.setPersonne(p);
											c.setPrelevement(prel);
											// System.out.println(cotationcytoS[i
											// - 14]);
											List<TypeCotation> tc = referentielService.getTypeCotation(cotationcytoVC[i - 14]);
											if (tc != null && tc.size() > 0) {
												c.setTypeCotation(tc.get(0));
											} else {
												System.out.println("erreur type de cotation " + cotationcytoVC[i - 14] + ":" + ligne);
											}
											HibernateUtil.beginTransaction();
											cotationDAO.save(c);
											HibernateUtil.commitTransaction();

											// cotationDAO.save(c);
											// System.out.println(c);

										}
									}

								}

							}

							if (fichier.contains("cytoSF.csv")) {

								for (int i = 14; i < cotationcytoSF.length + 14; i++) {
									if (i < tableau.length) {
										String dateCotation = tableau[i];
										if (!dateCotation.isEmpty()) {
											Cotation c = new Cotation();
											if (dateCotation.equals("x") || dateCotation.equals("X")) {
												c.setDate(dateReception);
											} else {
												try {
													Date dateCotationD = formatter.parse(dateCotation);
													c.setDate(dateCotationD);
												} catch (ParseException e) {
													System.out.println("erreur date de cotation " + dateCotation + ":" + ligne);
													e.printStackTrace();
												}
											}
											c.setAnalyse(analyse);
											c.setPersonne(p);
											c.setPrelevement(prel);
											// System.out.println(cotationcytoS[i
											// - 14]);
											List<TypeCotation> tc = referentielService.getTypeCotation(cotationcytoSF[i - 14]);
											if (tc != null && tc.size() > 0) {
												c.setTypeCotation(tc.get(0));
											} else {
												System.out.println("erreur type de cotation " + cotationcytoSF[i - 14] + ":" + ligne);
											}
											HibernateUtil.beginTransaction();
											cotationDAO.save(c);
											HibernateUtil.commitTransaction();

											// cotationDAO.save(c);
											// System.out.println(c);

										}
									}

								}

							}

							if (fichier.contains("puceP.csv")) {

								for (int i = 14; i < cotationpuceP.length + 14; i++) {
									if (i < tableau.length) {
										String dateCotation = tableau[i];
										if (!dateCotation.isEmpty()) {
											Cotation c = new Cotation();
											if (dateCotation.equals("x") || dateCotation.equals("X")) {
												c.setDate(dateReception);
											} else {
												try {
													Date dateCotationD = formatter.parse(dateCotation);
													c.setDate(dateCotationD);
												} catch (ParseException e) {
													System.out.println("erreur date de cotation " + dateCotation + ":" + ligne);
													e.printStackTrace();
												}
											}
											c.setPersonne(p);
											c.setPrelevement(prel);
											// System.out.println(cotationcytoS[i
											// - 14]);
											List<TypeCotation> tc = referentielService.getTypeCotation(cotationpuceP[i - 14]);
											if (tc != null && tc.size() > 0) {
												c.setTypeCotation(tc.get(0));
											} else {
												System.out.println("erreur type de cotation " + cotationpuceP[i - 14] + ":" + ligne);
											}
											HibernateUtil.beginTransaction();
											cotationDAO.save(c);
											HibernateUtil.commitTransaction();

											// cotationDAO.save(c);
											// System.out.println(c);

										}
									}

								}

							}

							if (fichier.contains("puceA.csv")) {

								for (int i = 14; i < cotationpuceA.length + 14; i++) {
									if (i < tableau.length) {
										String dateCotation = tableau[i];
										if (!dateCotation.isEmpty()) {
											Cotation c = new Cotation();
											if (dateCotation.equals("x") || dateCotation.equals("X")) {
												c.setDate(dateReception);
											} else {
												try {
													Date dateCotationD = formatter.parse(dateCotation);
													c.setDate(dateCotationD);
												} catch (ParseException e) {
													System.out.println("erreur date de cotation " + dateCotation + ":" + ligne);
													e.printStackTrace();
												}
											}
											c.setAnalyse(analyse);
											c.setPersonne(p);
											c.setPrelevement(prel);
											// System.out.println(cotationcytoS[i
											// - 14]);
											List<TypeCotation> tc = referentielService.getTypeCotation(cotationpuceA[i - 14]);
											if (tc != null && tc.size() > 0) {
												c.setTypeCotation(tc.get(0));
											} else {
												System.out.println("erreur type de cotation " + cotationpuceA[i - 14] + ":" + ligne);
											}
											HibernateUtil.beginTransaction();
											cotationDAO.save(c);
											HibernateUtil.commitTransaction();

											// cotationDAO.save(c);
											// System.out.println(c);

										}
									}

								}

							}
							if (iep == null) {
								System.out.println("erreur pas d'IEP " + ligne);
							}
						} else {
							System.out.println("erreur pas de nom " + ligne);
						}
					} else {
						System.out.println("pas assez de champs sur la ligne " + ligne);
					}
				}
				nbLigne++;
			}
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}
}